import copy
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        mapper={}
        if not strs:
            return ""
        offset=len(strs[0])
        for i,val in enumerate(strs[0]):
            if val in mapper:
                mapper[val].append(i)
            else:
                mapper[val]=[i]
        for s in strs[1:]:
            tempmapper=copy.deepcopy(mapper)
            temp=0
            for i,val in enumerate(s):
                try:
                    try:
                        if tempmapper[val][0]==i:
                            temp+=1
                            tempmapper[val].pop(0)
                        else:
                            break
                    except IndexError:
                        break
                except KeyError:
                    break
            if temp<offset:
                offset=temp
        return strs[0][:offset]

'''
执行用时：
80 ms
, 在所有 Python3 提交中击败了
8.02%
的用户
内存消耗：
15 MB
, 在所有 Python3 提交中击败了
5.01%
的用户
'''


class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        offset=0
        if not strs:
            return ""
        while True:
            try:
                val=strs[0][offset]
                for s in strs:
                    if s[offset] !=val:
                        raise Exception
                offset+=1
            except:
                break
        return strs[0][:offset]

'''
执行用时：
32 ms
, 在所有 Python3 提交中击败了
97.01%
的用户
内存消耗：
14.9 MB
, 在所有 Python3 提交中击败了
5.01%
的用户
'''